/*
 * New BSD License
 * 
 * Copyright (c) 2008, Dan Crawford, Philip Nichols, Jacob Siegel, Tim Stefanski, Justin Williamson All rights reserved.
 * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer
 * in the documentation and/or other materials provided with the distribution.
 * Neither the name of the Artemis Group nor the names of its contributors may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
 * OF SUCH DAMAGE. 
 * 
 * Project Artemis
 */


package ALDITS;


import java.awt.Graphics;
import java.awt.Color;
/* 
 * Class WeatherFront is defined by its (x,y) location representing the 
 * center of the weather front.  
 * 
 * Current Issues: Method of testing collision 
 *                                 How to tell direction of movement from protocol.
 *                                 How protocol relates size of WeatherFront.
 *                                              Current setup may be thus obselete.
 */
public class WeatherFront extends MapObject{
        int x;//x,y coordinates represent center
        int y;
        int width;
        int height;
        boolean vertHor;//False = traveling Vertically, True = traveling Horizontally
        
        /*
         * Constructor 
         * @Param (x,y)start location, int width, Bool direction
         */
        public WeatherFront(int x, int y, int width, int height, boolean dir)
        {
                this.x = x;
                this.y = y;
                this.width = width;
                this.height = height;
                this.vertHor = dir;
        }
        
        //newLoc moves WeatherFront, @param new location
        public void newLoc (int x, int y)
        {
                this.x = x;
                this.y = y;
        }
        
        //draws WeatherFront
        public void draw(Graphics g)
        {
                int half = width/2;
                if (vertHor)
                        g.drawLine(x, y - half, x, y + half);
                else
                        g.drawLine(x - half, y, x + half, y);
        }
        
        /*This calculates a collison based on a 
         * box around the weather front as the 
         * probability  of the nose and the line 
         * being at the same x or y coordinate is very
         * low 
         */
        public boolean collision(int xer, int yer)
	{
		int [] loc = {x, y};
		int [] plane = {xer, yer};
		double dist = Map.distanceFormula(loc, plane);
		if (dist > width/2 + 10)
			return false;
		return true;
	}
	
	@Override
	public String toStateMsg() {
		double d= width/2;
		// TODO Auto-generated method stub
		return "wf"+"~"+(x-d)+"~"+(y-d)+"~"+(x+d)+"~"+(y+d);
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return null;
	}
}

